package com.david.system.service;

import com.david.common.utils.PageResult;
import com.david.system.pojo.DTO.UserSearchDTO;
import com.david.system.pojo.Entity.*;
import com.david.system.pojo.VO.DeptVO;
import com.david.system.pojo.VO.MenuVO;
import com.david.system.pojo.VO.WarehouseVO;
import com.david.system.pojo.DTO.WarehouseDTO;

import java.util.List;

public interface AdminService {
    PageResult userlist(Integer page, Integer pageSize);

    PageResult userlistBysearch(UserSearchDTO userSearchDTO);

    DeptVO deptCastList();

    List<RoleEntity> getRoleAll();

    void changeUsersStatusBatch(List<UserInfo> userInfoList, String statusTo);

    Integer checkUsername(String username);


    Integer addUser(UserInfo userInfo);

    void delUser(Long id);

    void editUser(UserInfo userInfo);

    List<JobEntity> getJobListByDeptId(Integer deptId);

    List<MenuVO> getMenuList();

    List<Integer> getRoleMenuIds(Integer id);


    void setRoleMenuId(Integer roleId, List<Integer> ids);

    void delRoleById(Integer id);

    Boolean addRole(RoleEntity role);

    void editDeptName(Integer deptId, String deptName);

    Boolean addDept(String name, Integer parentId);

    Boolean delDept(Integer id);

    Boolean addJob(JobEntity job);

    void delJobs(List<Integer> ids);

    List<WarehouseVO> getWhlist(String type);

    PageResult getUserByDeptId(Integer deptId);

    List<UserInfo> getWhUserListByWhID(Integer whId);

    void setWhadmins(Integer whId, List<UserInfo> userInfos);

    String delWh(Integer whId);

    List<WhType> getWhType();

    String updateWh(WarehouseDTO warehouseDTO);

    void addWhType(WhType whType);

    void changeUsersStatus(UserEntity user);
}
